package com.netty.simple;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;

import java.nio.charset.StandardCharsets;

/**
 * @Author 咕唧
 * @Date 2022/7/7 20:52
 * @Version 1.0
 */
public class NettyServerHandler extends ChannelInboundHandlerAdapter {
    /**
     * 当客户端和我们建立连接的时候执行
     *
     * @param ctx
     * @throws Exception
     */
    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {
        System.out.println("NettyServerHandler的channelActive方法执行了");
        ctx.writeAndFlush("欢迎来到对抗路");
    }

    /**
     * 当客户端和我们发送消息的时候执行
     *
     * @param ctx
     * @param msg
     * @throws Exception
     */
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
        System.out.println("NettyServerHandler的channelRead方法执行了");
        String content = ((ByteBuf) msg).toString(StandardCharsets.UTF_8);
        System.err.println("收到了来自于客户端的消息:" + content);

//        System.err.println(msg);
    }

    /**
     * 当数据读取完成后执行
     *
     * @param ctx
     * @throws Exception
     */
    @Override
    public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
        super.channelReadComplete(ctx);
        System.out.println("NettyServerHandler的channelReadComplete方法执行了");
    }

    /**
     * 发送异常的时候执行
     *
     * @param ctx
     * @param cause
     * @throws Exception
     */
    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        super.exceptionCaught(ctx, cause);
        System.out.println("NettyServerHandler的exceptionCaught方法执行了");
    }
}
